package com.ttx.pattern.example.singleton.after;

/**
 * 内部类实现
 * @author TimFruit
 * @date 19-10-20 下午5:53
 */
public class Singleton4 {

    private Singleton4(){}// 私有构造方法

    public static Singleton4 getInstance(){
        return InnerSingleton.instance;

    }

    //内部类
    //类在加载时, 初始化属性会收集在<clinit>方法
    //多个线程调用初始化方法,会被阻塞,确保只有一个线程调用,并保证属性的可见性
    private static class InnerSingleton {
        private static final Singleton4 instance=new Singleton4();
    }

}
